# 1、TCP编程总结
"""
1.当TCP客户端程序想要和TCP服务器端程序进行通信的时候必须要先建立连接
2.TCP客户端程序一般不需要绑定端口号，因为客户端是主动发起建立连接的
3.TCP服务端程序必须绑定端口号，否则客户端找不到这个TCP服务端程序
4.listen后的套接字是被动套接字，只负责接收新的客户端的连接请求，不能收发消息
5.当TCP客户端程序和TCP服务端程序连接成功后，TCP服务器端程序会产生一个新的套接字，收发客户端消息使用该套接字
6.关闭accept返回的套接字意味着和这个客户端已经通信完毕
7.关闭listen后的套接字意味着服务端的套接字关闭了，会导致新的饿客户端不能连接服务器，
    但是之前已经连接成功的客户端还能正常通信
8.当客户端的套接字调用close后，服务器端的recv会解阻塞，但会掉饿数据长度为0，服务端可以通过返回数据的长度来判断客户端是否已经下线，
    反之服务端关闭套接字，客户端的recv也会解阻塞，返回的数据长度也为0.
"""

# 2.TCP的特点和优缺点
"""
特点：
    可靠性：TCP保证数据的可靠传输，通过重传机制和确认机制避免数据丢失或损坏
    顺序性：TCP保证数据按照发送的顺序进行传输，接收端可以按照相同顺序重组数据
    流量控制：TCP使用滑动窗口机制来控制发送端的数据量，避免接收端缓冲区溢出

优点：
    可靠性高：通过重传和确认机制保证数据的可靠性，适用于数据完整性要求高的应用场景
    顺序性强：保证数据按照发送的顺序，使用于需要按序处理的应用场景
    
确定:
    开销大：TCP需要建立连接、维护状态和进行确认，占用较多的网络资源
    传输速度相对较慢：由于提供可靠性保证，TCP的传输速度相对较慢
"""

# 3.UDP的特点和优缺点
"""
特点：
    无连接：UDP不需要进行连接的建立和维护，数据报独立发送
    无可靠性保证：UDP不提供重传和确认机制，数据传输不可靠。

优点：
    传输速度快：由于无需建立连接和提供可靠性保证，UDP传输速度较快
    开销小：UDP不需要维护连接状态和进行确认，占用较少的网络资源
    
缺点：
    不可靠性高：由于无重传和确认机制，数据传输可能丢失或损坏
    顺序性差：UDP数据报独立发送，接收端无法保证数据按照发送顺序接收
"""

# 4.应用场景
"""
TCP的应用场景：
    网页浏览：HTTP协议使用TCP来传输网页内容，保证数据的可靠性和顺序性
    文件传输：FTP协议使用TCP来传输文件，确保文件的完整性和正确性
    邮件传输：SMTP协议使用TCP来传输电子邮件，保证邮件的可靠传输和顺序接收
    远程登录：Telnet和SSH等远程登录协议使用TCP来提供安全的登录通道
    数据库访问：MySQL、Oracle等数据库使用TCP来进行数据传输和查询
    
UDP的应用场景：
    实时通讯：音频、视频会议以及实时游戏等应用利用UDP的快速传输特性，实现实时交互
    流媒体：流媒体传输（如音频和视频的实时播放）通常使用UDP，因为对于丢失少量数据并不敏感，但传输速度至关重要
    DNS解析：域名系统（DNS）使用UDP进行域名解析请求和响应，以快速获取域名对应的IP地址
    广播和多播：UDP支持广播和多播传输，用于向多个主机发送数据，如局域网中的视频流广播
    大型网络游戏的数据包传输
    
"""
